home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
-
- MODULE
- DYN.h
-
- DESCRIPTION
- Header File for ``Dynamic Strings''
-
- HISTORY
- 29-09-94 b_noll created
-
- ******************************************************************************/
-
- #ifndef DYN_H
- #define DYN_H 1
-
- #include <stdarg.h>
-
- struct _DSTR {
- int len;
- int use;
- char str[1];
- }; /* struct DSTR */
- #define DSTR struct _DSTR *
-
- #ifndef TRUE
- #define BOOL int
- #endif
-
- #define EmptyDyn NULL
-
- void DynInit (DSTR *pstr);
- void DynClear (DSTR *pstr);
- void DynDelete (DSTR *pstr);
- void DynReset (DSTR *pstr);
- void DynErase (DSTR *pstr);
- char*DynValue (DSTR *pstr);
- int DynSize (DSTR *pstr);
- int DynLen (DSTR *pstr);
- BOOL DynDel (DSTR *pstr, int pos, int chars);
- BOOL DynExpand (DSTR *pstr, int max);
- BOOL DynIns (DSTR *pstr, const char *src, int pos);
- BOOL DynCat (DSTR *pstr, const char *src);
- BOOL DynCpy (DSTR *pstr, const char *src);
- BOOL DynSCpy (DSTR *pstr, const char *src);
- BOOL DynDIns (DSTR *pstr, DSTR *src, int pos);
- BOOL DynDCat (DSTR *pstr, DSTR *src);
- BOOL DynDCpy (DSTR *pstr, DSTR *src);
- BOOL DynDSCpy (DSTR *pstr, DSTR *src);
- BOOL vDynAppend (DSTR *pstr, int num, va_list adds);
- BOOL vDynPrintf (DSTR *pstr, const char *tplt, va_list args);
- int DynPutc (DSTR *pstr, int chr);
- BOOL DynGetFile (DSTR *pstr, const char *name);
-
- #ifdef STREAM /* ---- Really so ? */
- BOOL DynGIns (DSTR *pstr, int pos, STREAM instream, char *(read)(STREAM));
- #endif
-
- #ifndef NO_DYNSTR_MACROS
- #define BRA_ do{
- #define KET_ }while(0)
-
- #define DynInit(pstr) *(pstr) = EmptyDyn
- #define DynDelete(pstr) DynClear(pstr)
- #define DynClear(pstr) BRA_ DSTR d;if((d=*(pstr)))free(d);*(pstr)=EmptyDyn;KET_
- #define DynReset(pstr) BRA_ DSTR d;if((d=*(pstr)))d->use=strlen(d->str); KET_
- #define DynErase(pstr) BRA_ DSTR d;if((d=*(pstr)))d->use=d->str[0]=0; KET_
- #define DynValue(pstr) ((*(pstr))? ((*(pstr))->str): "")
- #define DynSize(pstr) ((*(pstr))? ((*(pstr))->len): 0)
- #define DynLen(pstr) ((*(pstr))? ((*(pstr))->use): 0)
-
- #endif /* !NO_DYNSTR_MACROS */
- #endif /* !DYN_H */
-
- /******************************************************************************
- ***** END DYN.h
- ******************************************************************************/
-